1. Field of the Invention
This invention relates to the field of computer systems.
Portions of the disclosure of this patent document contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyright rights whatsoever. Sun, Sun Microsystems, the Sun logo, Java, JavaBeans, Hotjava and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.
2. Background Art
Computer systems often include additional devices used to provide additional functionality. These devices, often called xe2x80x9cperipheralxe2x80x9d devices, can include keyboards, printers, scanners, network interface and graphics cards, modems, monitors, cameras, and sound input devices. Generally, a device driver is used to control the peripheral device. In some network environments, the traditional device driver may not be appropriate for an attached device. This problem can be understood by a review of peripheral devices.
Peripheral devices are often connected to a computer system through an expansion bus. An expansion bus allows the processor of a computer system (via software running on the processor), main memory, and other hardware associated with a computer system to control peripheral hardware devices external to the computer system. An expansion bus consists of conductors for data and control signals, along with hardware support logic chips and possibly firmware. There are a variety of expansion buses such as ISA (Industry Standard Architecture), PCI (Peripheral Component Interconnect), S-Bus, VME bus, etc. Each expansion bus defines a certain protocol by which devices that are on the bus are accessed.
A device driver is software used to control a peripheral device that is coupled with the computer system on the bus. A device driver is a program that controls a particular type of device that is attached to your computer. There are device drivers for printers, displays, CD-ROM readers, diskette drives, and so on. Many device drivers are built into an operating system. New device drivers are needed for devices for which the operating system does not already have drivers. A device driver converts the more general input/output instructions of the operating system to messages that the device type can understand. In many computer systems, device drivers exist as a dynamic link library (DLL) file. Since misprogramming of a peripheral on a bus can cause loss of service or system failure, it is customary for device drivers to be run in a protected, or kernel, mode.
FIG. 1 illustrates symbolically the interrelation of devices, device drivers, and application programs. Devices, such as devices A and B, communicate through a bus (such as an expansion bus) to system software. The system software includes device drivers (device driver A and device driver B, respectively) implemented in the system software kernel. Applications can access the devices through the system software kernel and the appropriate device drivers.
A problem can arise where, in some network environments, a peripheral device may not be coupled directly to the computer system through the bus, but rather through a network connection. In those cases, traditional device drivers may not operate correctly to permit operation of the peripheral device, however, the only interface that is provided by the operation system is through a device driver.
A pseudo device driver is provided for use by an operation system in a virtual desktop computing environment. Where traditional device drivers do not operate correctly to permit operation of a peripheral device, and the only interface that is provided is through a device driver, the present invention provides a virtual device driver to act as an adapter to couple an application to the peripheral device. The pseudo device driver has two ports, a master port that is opened by the driver application and a slave port accessed by a program. The two ports provide the functionality necessary for supporting the remote device on the terminal. When a program accesses a device coupled to the terminal, the program opens the pseudo device driver""s slave port and proceeds as if the device were coupled to a local bus.